1. Field of the Invention
The present invention relates generally to computer storage systems and more particularly, to providing storage service and associated service sharing methods that allow traffic from multiple customers to access the storage system concurrently. The methods proposed and the apparatus of the present invention provide quality of service in terms of latency, bandwidth, and service time for workloads from the customers.
2. Description of Related Art
Over time, computer systems, operating systems, and storage systems are required to service multiple applications concurrently. To provide sharing, a storage system also can be concurrently accessed by multiple computer systems each with multiple applications. Storage systems provide input/output (I/O) services to the applications. These applications typically have different data-delivery requirements; some require immediate response, some require a certain amount of storage bandwidth in a time window, and some require fair sharing of service time. Applications split their I/O needs into requests. These requests are transported from the application to the storage system. The storage system keeps the incoming requests in a queue and services them using a scheduling algorithm. There are algorithms that have been developed for I/O request scheduling but no algorithm has been able to satisfy the differing requirements of multiple applications simultaneously.
For example, interactive applications such as LATEX-editing require shorter average response times for their requests, real-time applications such as podcast audio require bounded latencies for their requests, and throughput-intensive applications such as data transfers and HPC applications require high bandwidth across multiple requests. Ever since the invention of movable disk heads, a plethora of algorithms have been developed to satisfy the different data-delivery requirements of applications, however, no single I/O scheduler is likely to be able to satisfy the requirements simultaneously.
One solution is to provide multiple algorithms, each satisfying a different data-delivery requirement, and mechanisms to activate one of these algorithms as needed by the applications. Linux versions 2.6.11 and above follows a similar approach. This solves only a special case of the original problem, i.e., when a single application with one requirement is accessing a storage resource, an appropriate scheduler can be activated. When there are multiple applications with different data-delivery requirements that are executing concurrently, it is not clear how the appropriate algorithms are selected. So, the Linux solution does not solve the original problem, i.e., simultaneously servicing multiple applications with different data-delivery requirements.
Server consolidation and virtualization of I/O systems, which will be pervasive in future systems, compound the original problem because they will provide service to many more applications with even more diverse data-delivery requirements. These two trends, although attractive for economic reasons, increase the diversity and complexity of applications sharing an I/O system, making it imperative to ensure that applications receive their share of I/O resources and the I/O performance to which they are entitled.
A possible extension to the Linux solution is to provide multiple algorithms and mechanisms so that applications can select algorithms that best suit their needs. However, this approach has a major problem that requires a nontrivial solution: when multiple applications, potentially using multiple schedulers, access the storage system, a mechanism is needed to control access to the storage system such that all applications get their fair share of the resource.
Schedulers for fair sharing of processor and network resources cannot be adapted for fair sharing of disk resources because of the fundamental differences between the resources. For instance, the relative order of request accesses to disk resources may impact disk utilization and fairness. However, such relative order has no impact on either processor or network resource utilization or fairness. While fair queuing and round-robin scheduling has been used extensively in sharing network resources, only a handful of researchers have explored it with respect to disk I/O schedulers and none of them have used it for adaptive I/O scheduling.
The referenced shortcomings in solving the problem are not intended to be exhaustive, but rather are among many that tend to impair the effectiveness of previously known techniques concerning I/O scheduling algorithms. However, those mentioned here are sufficient to demonstrate that the methodologies appearing in the art have not been satisfactory and that a significant need exists for the techniques described and claimed in this disclosure.
Fair queuing disk schedulers presented by previous researchers require detailed performance models of the disk system and/or models to estimate the seek delay and rotation delay for each I/O request. Constructing such models is difficult for a single drive, let alone for multi-drive disk arrays that are commonplace. In addition, although these schedulers are purported to be fair, they fail to provide I/O performance isolation, making them less attractive for adaptive I/O scheduling. Here I/O performance isolation means that the I/O behavior of one application does not affect the I/O performance of other applications.
Therefore to meet the quality of service needs of requests generated to a storage system from multiple applications with different data-delivery requirements, we need a flexible disk service allocation algorithm. This algorithm needs to allow different application-specific algorithms, each supporting the I/O requests of a different application class, to co-exist and provide fair allocation of disk service among these algorithms. In addition, this mechanism also should allow the addition of new application-specific algorithms so that many other requirements can be satisfied.